[세션레포트] Optimizing the world's top apps: How Meta tests using AWS Device Farm #AWSreInvent #FWM204

[세션레포트] Optimizing the world's top apps: How Meta tests using AWS Device Farm #AWSreInvent #FWM204

AWS re:Invent 2024 "세계 최고의 앱 최적화: AWS Device Farm을 사용한 메타 테스트 방법" 세션 레포트입니다.
Clock Icon2025.01.03

안녕하세요. 클래스메소드의 정하은입니다.

이번 글에서는 AWS re:Invent 2024 에서 "세계 최고의 앱 최적화: AWS Device Farm을 사용한 Meta의 테스트 방법" 을 주제로 한 세션을 듣고 온 레포트를 작성하고자 합니다.

본 세션에서는 모바일 앱 테스트 서비스 AWS Device Farm에 대하여 Facebook의 회사로 유명한 Meta의 사례와 함께 소개하였습니다.

이 세션에서는 AWS Device Farm을 통해 실제 디바이스에서 대규모로 테스트를 실행하여 모바일 및 웹 앱의 품질을 향상시키는 방법을 알아봅니다. 선도적인 소셜 미디어 회사인 Meta가 Device Farm을 사용하여 모바일 앱 테스트 프로세스를 간소화하고, 모바일 앱과 SDK의 품질을 개선하며, 클라우드의 실제 디바이스에서 자동화 및 수동 테스트를 실행하고, 문제를 더 빨리 식별하고 수정하며, 업데이트를 더 자주 릴리스하는 방법에 대해 들어보세요.

세션 영상은 유튜브에 공개 되어 있으니 참고 바랍니다.

세션 내용

모바일 앱 테스트의 과제

IMG_2247

모바일 앱을 개발한 후 테스트를 진행하는 상황이라고 가정할 때, 개발자는 화면 사이즈, GPU, 모델, OS 등 여러 요인들을 고려하여 실제 기기를 구매할텐데요. 구매한 기기를 이용해 테스트를 진행했을 때 기대하던 결과와 다른 현상이 발생한 경우, 특정 기기에서만 발생하는지, 특정 OS에서만 발생하는지, 그 외 다른 조건에 의해 발생하는 지 도출하는 과정을 통해 앱에 문제가 없는지 확인하게 됩니다.

이러한 테스트 과정은 사람의 힘으로 어느 정도 가능하지만 시간과 비용이 많이 소모됩니다.

AWS Device Farm이란?

IMG_2248

AWS Device Farm은 실제 기기들과 데스크톱 브라우저를 대규모로 테스트할 수 있는 완전 관리형 애플리케이션 테스트 서비스입니다.

IMG_2249

AWS Device Farm은 원격 접속으로 자동화된 테스트가 가능합니다. Chrome, Firefox, Edge 등 여러 데스크톱 브라우저 버전을 제공하고 있어 데스크톱 브라우저 테스트에도 용이합니다.

또, VPN이나 MDM이 설정되어 있더라도 VPC에 추가가 가능하고, Android 루트 디바이스를 지원합니다.

IMG_2250

결론적으로 테스트를 위해서 ipa나 apk와 같은 어플리케이션 파일과 테스트 프레임워크만 준비하면 됩니다.

각각의 기기들은 독립적인 환경에서 실행하기 때문에 보다 정확한 결과를 얻을 수 있습니다.

Meta 테스트 사례

Meta에서 개발자로 일하시는 분께서 이용 사례에 대해 발표해주셨습니다.

IMG_2251

먼저 Meta의 배포 과정에 대해서 간단히 설명하였는데요. 이 과정은 여느 개발 과정과 크게 다르지 않았습니다.

코드를 짜면, IDE에서 코드에 대한 피드백이 오면 수정하는 과정을 진행합니다. 이 과정 후 빌드에 문제가 없다면 유닛 테스트를 실행하거나, 에뮬레이터로 테스트하거나 E2E 테스트를 추가합니다. 코드 리뷰를 제출한 후, 리뷰가 진행되는 동안 간단한 E2E 테스트와 유닛 테스트를 실행합니다. 리뷰가 통과되면 메인 브랜치에 통합하고, 다시 메인 브랜치에서 E2E 테스트를 실행하여 아무런 문제가 없는지 확인합니다. 빌드가 릴리스 후보로 승격되면, 수동 테스트를 위해 QA 팀에 보내지거나 Meta의 개발머신에 내부적으로 배포됩니다. 모든 것이 좋아 보이고 버그가 없으면 빌드는 출시 준비가 완료된다고 합니다.

IMG_2262

이러한 과정이 순조롭게 진행이 된다면 좋겠지만, 항상 이상적인 상황으로만 흘러가지는 않죠. 실제로는 단순 버그가 출시 파이프라인에서 매우 늦게 발견이 되어, 문제가 발생한다고 합니다.

IMG_2253
IMG_2254

개발하는 앱을 기기에 설치하는 경우 한계라는 것이 존재할 수 밖에 없는데요. 이 한계는 Android와 iOS라는 플랫폼의 차이뿐만이 아니라 기종이나 에뮬레이터에 따라서도 다르며 특정 환경에서만 실행되는 코드도 존재하기 때문에 일일이 확인하는 것이 번거롭죠. 그리고 GPU의 문제도 존재하는데, 실제 스마트폰과 애뮬레이터의 GPU 성능 차이로 인해 움직임의 차이가 발생합니다.

이를 AWS Device Farm이 제공하는 디바이스를 통해 실제 스마트폰 기기를 사용하는 것과 동일한 환경으로 테스트가 가능했다고 합니다.

IMG_2255
IMG_2256

성능을 측정할 때에 시스템 노이즈가 끼는 경우가 많은데, 이 노이즈를 최소화 해야합니다. 그렇기 때문에 노이즈를 최소화하는 기술을 적용하여 그래프가 훨씬 매끄럽게 성능 저하를 감지할 수 있게 되었다고 해요.

또, Meta에서는 서버 호출의 영향을 최소화하기 위해 앱의 모든 요청을 로컬 프록시를 통해 기록하고, 서버에 대한 요청과 응답을 기록한다고 하는데요. 이는 AWS Device Farm에의 커스터마이징 기능을 통해 실현하는 것이 가능했다고 합니다.

IMG_2257
IMG_2260

그리고 Meta에서는 데이터 수집을 위해 최소 50개의 평가판을 실행하여 각 평가판마다의 차이점을 비교하는데 AWS Device Farm에서 제공하는 2시간 30분의 제한 시간 내에 확인하는 것이 가능했다고 합니다.

그 외에도 루트 디바이스에서 강제적으로 앱을 종료하거나 애플리케이션의 디스크 상태를 스냅샷으로 찍어 각 평가판 전에 복원을 하여 디스크의 노이즈를 감소시킬 수도 있다는 부분에 대해서도 언급하였습니다.

IMG_2258

Meta에서는 CPU 주파수 변화의 영향을 최소화하기 위해 수동으로 CPU가 과열되지 않는 값으로 조정해둔다고 합니다. 또한 주파수 변화가 없는지 확인하기 위해 테스트 전후에 CPU 주파수 체인이 몇 배나 변경되었는지 값을 읽고, 이 두 값이 일치하지 않으면 테스트를 무효화합니다. 이 기능은 AWS Device Farm에서 제공하는 루트 디바이스에서 유용하게 사용할 수 있는 부분이었다고 합니다.

What's new

IMG_2259

마지막으로 AWS Device Farm의 업데이트 내용에 대하여 소개되었습니다.

iOS앱의 XCTest UI가 지원이 되면서 ipa파일만으로 테스트가 가능해졌다고 합니다. XCTest 형식으로 테스트를 하는 경우, zip형식으로 파일을 업로드 할 필요가 있는데, XCTest UI는 두 가지 방식 모두 지원이 된다고 하네요.

그 외 서비스 성능 자체가 향상 된 부분이나, 종속성의 간편화, 콘솔 개선, 에러 디버깅과 비디오 스트리밍 기능이 개선 되었다고 합니다.

마무리

AWS 내에서는 정말 희귀한 모바일 관련 서비스에 관한 세션이었는데 제가 들었던 세션들 중에서는 배경지식이 있는 분야라 가장 흥미있게 들었던 것 같아요.

AWS Device Farm이 출시된 지는 거의 10년 즈음 됐을 정도로 꽤나 오래된 서비스지만 이 세션을 신청하기 전까지는 존재에 대해서 잘 모르고 있었던 것에 조금 반성하게 된 계기가 되기도 했습니다.
테스트용 기기가 없을 때 활용할 수도 있고, Appium을 사용하면 서로 다른 플랫폼의 코드라도 하나의 테스트 코드로 테스트가 가능하다고 하는 큰 이점을 가지고 있어 iOS와 Android 양측을 지원하는 앱에서라면 활용성이 좋을 것 같다고 느꼈습니다.

Meta의 사례와 더불어 AWS Device Farm에 대해 새롭게 알아갈 수 있어 매우 유익한 시간이었습니다!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.